In a computer cluster environment, one or more computer clusters may implement a policy that controls certain actions affecting the performance of installed applications. Such a policy may identify one or more dependencies that exist between applications installed on the computer clusters in the computer cluster environment. For example, a policy may identify a dependent application installed on a computer cluster that is dependent upon another application installed on another computer cluster.
In addition to identifying dependencies that exist between applications, the policy may also identify one or more actions to be performed on dependent applications in response to certain events occurring in the computer cluster environment. For example, if a dependent application installed on a computer cluster is dependent upon another application, the policy may instruct the computer cluster to shut down the dependent application whenever the other application faults. In this example, by shutting down the dependent application based on the policy's instruction, the computer cluster may prevent the dependent application from corrupting stored data and/or faulting due to its inability to function properly without the other application.
Unfortunately, while such policies may serve an important role in handling faults that occur in computer cluster environments, existing policy technologies may suffer from one or more shortcomings and/or inefficiencies that have a negative impact on user experience. For example, many existing policy technologies may be unable to configure a platform-agnostic policy capable of being implemented by different types of high-availability software installed in the computer cluster environment. In another example, many existing policy technologies may be unable to incorporate rolling upgrades and/or patches aimed at repairing software bugs that result in faulty interpretation of the policy. As such, the instant disclosure identifies a need for systems and methods for configuring upgradable policies capable of being implemented by different types of high-availability software installed in computer cluster environments.